perm filename EXSORT[1,JRA] blob
sn#005808 filedate 1972-07-31 generic text, type T, neo UTF8
00010 %Interchange sort taken from James King's Ph. D. thesis.%
00020
00100 PASCAL ENTRY N ≥ 1&SAMESET(A,A0,A[ARBITRARY]);
00200 EXIT ∀K((1≤K)∧(K≤N-1) ⊃ A[K]≤A[K+1])&SAMESET(A,A0,A[ARBITRARY]);
00250 BEGIN J←N;
00300 ASSERT ∀K((J+1≤K)∧(K≤N-1) ⊃ A[K]≤A[K+1]) &
00400 ∀M((1≤M)∧(M≤J)∧(J≤N-1) ⊃ A[M]≤A[J+1]) &
00500 1≤J&J≤N & MULTISET(A,A0,J+1,A[J+1],LOC,A[LOC]);
00600 WHILE J ≥2 DO
00700 BEGIN
00800 BIG ← A[1]; LOC ← 1; I ← 2;
00900 ASSERT ∀K((J+1≤K)∧(K≤N-1) ⊃ A[K]≤A[K+1]) &
01000 ∀L((1≤L)∧(L≤I-1)∧(I-1≤N) ⊃ A[L]≤BIG) &
01100 ∀M((1≤M)∧(M≤J)∧(J≤N-1) ⊃ A[M]≤A[J+1]) &
01200 BIG=A[LOC]&1≤LOC&LOC≤J&I≥2 &
01300 2≤J&J≤N & SAMESET(A,A0,A[ARBITRARY]);
01400 WHILE I≤J DO
01500 BEGIN IF A[I]>BIG THEN
01600 BEGIN BIG←A[I]; LOC←I END;
01700 I←I+1
01800 END;
01900 A[LOC] ← A[J];
02000 A[J] ← BIG;
02100 J←J-1
02200 END
02300 END.;